﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Controller;


namespace QLKS
{
    public partial class frmCheckInUpdate : Form
    {
        Controller_Room cont_room = new Controller_Room();
        Controller_CheckIn cont_ChIn = new Controller_CheckIn();
        FrmInfoCustomer frmInfo = new FrmInfoCustomer();
        public frmCheckInUpdate(frmCheckInUpdate x)
        {
            InitializeComponent();
            
        }

        public frmCheckInUpdate(string DetailsID, string CheckInDay, string CheckOutDay, string AmountRoom, string NguoiLon, string TreEm, string Deposit, string Amount, FrmInfoCustomer x)
        {
            InitializeComponent();
            frmInfo = x;
            cmb_GioDat.SelectedIndex = 0;
            cmb_PhutDat.SelectedIndex = 0;
            cmb_GioTra.SelectedIndex = 23;
            cmb_PhutTra.SelectedIndex = 0;
            txtMaHoaDon.Text = DetailsID;
            Date_NgayDat.Text = CheckInDay;
            Date_NgayTra.Text = CheckOutDay;
            num_SLPhong.Value = int.Parse(AmountRoom);
            num_SLNguoiLon.Value = int.Parse(NguoiLon);
            num_SLTreEm.Value = int.Parse(TreEm);
            txtGia.Text = Amount;
            txtDatCoc.Text = Deposit;
        }

        private void frmCheckInUpdate_Load(object sender, EventArgs e)
        {
            GetListRoomType();
        }

        private void btn_Close_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_Finish_Click(object sender, EventArgs e)
        {

        }

        private void txtGia_TextChanged(object sender, EventArgs e)
        {
            double datCoc = double.Parse(txtGia.Text.ToString()) * 20 / 100;
            txtDatCoc.Text = datCoc.ToString();
        }

        private void doTinhGiaTien()
        {
            TimeSpan ngay = Date_NgayTra.Value.Date - Date_NgayDat.Value.Date;
            int songay = (int)ngay.TotalDays;
            double giaPhong = 0;
            if (cmb_LoaiPhong.Text == "") return;
            if (cmb_LoaiPhong.Text != "System.Data.DataRowView")
                giaPhong = double.Parse(cmb_LoaiPhong.SelectedValue.ToString()) * double.Parse(num_SLPhong.Value.ToString()) * songay;
            txtGia.Text = giaPhong.ToString();
        }
        public void GetListRoomType()
        {
            DataTable dtRoom = cont_room.ListRoomType().Tables[0];
            cmb_LoaiPhong.DataSource = dtRoom;
            cmb_LoaiPhong.DisplayMember = "TypeName";
            cmb_LoaiPhong.ValueMember = "Cost";
        }

        private void num_SLPhong_ValueChanged(object sender, EventArgs e)
        {
            doTinhGiaTien();
        }

        private void cmb_LoaiPhong_DropDownClosed(object sender, EventArgs e)
        {
            doTinhGiaTien();
        }

        private void btnTinhTien_Click(object sender, EventArgs e)
        {
            doTinhGiaTien();
        }

        private void btnTinhDatCoc_Click(object sender, EventArgs e)
        {
            txtGia_TextChanged(sender, e);
        }

        private void btn_SaveTab2_Click(object sender, EventArgs e)
        {
            if (doCheckInfo() == false) return;
            string id = txtMaHoaDon.Text;
            string checkInday = Date_NgayDat.Text;
            string checkOutDay = Date_NgayTra.Text;
            int slPhong = (int)num_SLPhong.Value;
            int slNguoiLon = (int)num_SLNguoiLon.Value;
            int slTreEm = (int)num_SLTreEm.Value;
            string datCoc = txtDatCoc.Text;
            string tongTien = txtGia.Text;
            if(cont_ChIn.Update_CheckInInfo(id,checkInday,checkOutDay,slPhong,slNguoiLon,slTreEm,datCoc,tongTien))
                MessageBox.Show("Cập nhập thông tin thành công!","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
            else
                MessageBox.Show("Cập nhập thất bai!! Vui lòng kiểm tra lại thông tin","Thông báo");


        }

        private void frmCheckInUpdate_FormClosed(object sender, FormClosedEventArgs e)
        {
            frmInfo.Load_DgvCus();
        }
        public bool doCheckInfo()
        {
            if (txtMaHoaDon.Text.Trim() == "")
            {
                txtMaHoaDon.Focus();
                MessageBox.Show("Chưa nhập Mã hóa đơn", "Nhập thiếu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            TimeSpan ngay = Date_NgayTra.Value.Date - Date_NgayDat.Value.Date;
            int songay = (int)ngay.TotalDays;
            if (songay <= 0)
            {
                MessageBox.Show("Ngày Trả phải khác ngày đặt", "Nhập sai", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (((int)num_SLNguoiLon.Value + (int)num_SLTreEm.Value) == 0)
            {
                MessageBox.Show("Số khách phải khác 0", "Nhập sai", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (((int)num_SLPhong.Value) == 0)
            {
                MessageBox.Show("Số Phòng phải khác 0", "Nhập sai", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            return true;
        }

        private void txtGia_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }
    }
}
